-- Ricardo 23/1/2022 - Ticket 53096 - Reabierto
-- Se agrega el parametro de comprobante 'PermiteTotalNegativo' para manejar excepciones

CREATE OR REPLACE FUNCTION public.tg_insert_update_comm()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE NOT LEAKPROOF
AS $BODY$
DECLARE 
  vParamCom varchar;
BEGIN
IF (TG_OP = 'INSERT') THEN 
	PERFORM Veri_Uni(NEW.Id, NEW.TipoCom, NEW.IdPad, NEW.Letra, NEW.NroPtoVta, NEW.Nro, NEW.CodAmbSuc, NEW.NombreAmbEqu, NEW.TipoCai, NEW.Fecha, NEW.idcomtal, NEW.afipcbtetipo);
ELSIF (OLD.Nro <> NEW.Nro) or (OLD.NroPtoVta <> NEW.NroPtoVta) or (OLD.Letra <> NEW.Letra) or (OLD.Fecha <> NEW.Fecha) THEN 
	PERFORM Veri_Uni(NEW.Id, NEW.TipoCom, NEW.IdPad, NEW.Letra, NEW.NroPtoVta, NEW.Nro, NEW.CodAmbSuc, NEW.NombreAmbEqu, NEW.TipoCai, NEW.Fecha, NEW.idcomtal, NEW.afipcbtetipo);
END IF;


IF (NEW.TOTAL < 0) THEN
   vParamCom := (SELECT param FROM com WHERE tipo = NEW.TipoCom);
	IF POSITION ('PermiteTotalNegativo' IN vParamCom) = 0 THEN 
		RAISE EXCEPTION 'El total del comprobante da negativo, esto esta prohibido. Verifique su configuración o el uso que está dando al comprobante.';
	END IF;
END IF;

RETURN NEW;
END;
$BODY$;

ALTER FUNCTION public.tg_insert_update_comm()
    OWNER TO abacouser;
	
--
SELECT aaVersion('488.09', '488.08');
--
